/*
 * Copyright 2004-2005 asoft
 * 本软件及其所有拷贝的名称，与光盘上或本软件中注明的公司同在。
 * 本软件及文档享有版权，并受国家版权法及国际协约条款的保护。
 * 您不可以从本软件中去掉其版权声明；并保证为本软件的拷贝（本部或部分）* 复制版权声明。
 * 您同意制止以任何形式非法拷贝本软件及文档。
 * 版权信息参见：
 *      http://www.asoft.cn/licenses
 */

package com.asoft.common.basedata.valid;

import javax.servlet.http.HttpServletRequest;

import org.apache.log4j.Logger;

import com.asoft.common.basedata.define.TypeParams;
import com.asoft.common.basedata.manager.TypeManager;
import com.asoft.common.basedata.model.Type;
import com.asoft.common.util.mvc.valid.UserValidator;
import com.asoft.common.util.mvc.valid.ValidatedResult;

/**
 * <p>Title: 用户自定义的新增校验器</p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2003</p>
 * <p>Company: asoft</p>
 * @ $Author: author $
 * @ $Date: 2005/02/16 01:04:14 $
 * @ $Revision: 1.7 $
 * @ created in 2005-11-14
 *
 */

public class AddTypeValidator extends UserValidator
{
        static Logger logger = Logger.getLogger(AddTypeValidator.class);
        
        private TypeManager typeManager;
        
        /**
         * @param typeManager 要设置的 typeManager
         */
        public void setTypeManager(TypeManager typeManager)
        {
                this.typeManager = typeManager;
        }

        /**
         * 新增前的校验
         *
         * @ param: HttpServletRequest request
         * @ param: ValidatedResult vr 校验结果存放器
         * @ param: String[] params 配置参数
         */
        public void validing(HttpServletRequest request,ValidatedResult vr,String[] params)
        {
                Type superType = (Type)this.typeManager.get(request.getParameter("parentId"));
                
                if(superType == null)
                {
                        superType = typeManager.getByCode(TypeParams.ROOT);
                }
                
                String code = this.validString(request,vr,"code",1,50);
                if(typeManager.getByCode(code) != null)
                {
                        vr.setErrMess("code","已经被使用");
                }
                
                String name = this.validString(request,vr,"name",1,50);
                
                String remark = this.validString(request,vr,"remark",0,1000);
                
                if(vr.isAllValidated())
                {
                        Type type = new Type(superType,
                                             code,
                                             name,
                                             remark);
                        request.setAttribute(Type.class.getName(),type);
                }
        }
}
